home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Workbench / ToolManager / Source / Prefs / access.c next >
C/C++ Source or Header  |  1998-06-17  |  3KB  |  118 lines

  1. /*
  2.  * access.c  V3.1
  3.  *
  4.  * TM Access object class
  5.  *
  6.  * Copyright (C) 1990-98 Stefan Becker
  7.  *
  8.  * This source code is for educational purposes only. You may study it
  9.  * and copy ideas or algorithms from it for your own projects. It is
  10.  * not allowed to use any of the source codes (in full or in parts)
  11.  * in other programs. Especially it is not allowed to create variants
  12.  * of ToolManager or ToolManager-like programs from this source code.
  13.  *
  14.  */
  15.  
  16. #include "toolmanager.h"
  17.  
  18. /* Local data */
  19. static const char *TextTitle;
  20.  
  21. /* Access class instance data */
  22. struct AccessClassData {
  23.  ULONG acd_Dummy;
  24. };
  25. #define TYPED_INST_DATA(cl, o) ((struct AccessClassData *) INST_DATA((cl), (o)))
  26.  
  27. /* Access class method: OM_NEW */
  28. #undef  DEBUGFUNCTION
  29. #define DEBUGFUNCTION AccessClassNew
  30. static ULONG AccessClassNew(Class *cl, Object *obj, struct opSet *ops)
  31. {
  32.  ACCESS_LOG((LOG1(Tags, "0x%08lx", ops->ops_AttrList),
  33.              PrintTagList(ops->ops_AttrList)))
  34.  
  35. #if 0
  36.  /* Create object */
  37.  if (obj = (Object *) DoSuperNew(cl, obj,
  38.                                        MUIA_Window_Title, TextTitle,
  39.                                        MUIA_HelpNode,     "AccessWindow",
  40.                                        TMA_Type,          TMOBJTYPE_ACCESS,
  41.                                        TAG_MORE,          ops->ops_AttrList)) {
  42.   struct AccessClassData *acd = TYPED_INST_DATA(cl, obj);
  43.  }
  44. #else
  45.  obj = NULL; /* Don't try to create an object */
  46. #endif
  47.  
  48.  ACCESS_LOG(LOG1(Result, "0x%08lx", obj))
  49.  
  50.  /* Return pointer to created object */
  51.  return((ULONG) obj);
  52. }
  53.  
  54. /* Access class method: OM_DISPOSE */
  55. #undef  DEBUGFUNCTION
  56. #define DEBUGFUNCTION AccessClassDispose
  57. static ULONG AccessClassDispose(Class *cl, Object *obj, Msg msg)
  58. {
  59.  ACCESS_LOG(LOG1(Disposing, "0x%08lx", obj))
  60.  
  61.  /* Call SuperClass */
  62.  return(DoSuperMethodA(cl, obj, msg));
  63. }
  64.  
  65. /* Access class method dispatcher */
  66. #undef  DEBUGFUNCTION
  67. #define DEBUGFUNCTION AccessClassDispatcher
  68. __geta4 static ULONG AccessClassDispatcher(__a0 Class *cl, __a2 Object *obj,
  69.                                            __a1 Msg msg)
  70. {
  71.  ULONG rc;
  72.  
  73.  ACCESS_LOG(LOG3(Arguments, "Class 0x%08lx Object 0x%08lx Msg 0x%08lx",
  74.                  cl, obj, msg))
  75.  
  76.  switch(msg->MethodID) {
  77.   /* BOOPSI methods */
  78.   case OM_NEW:
  79.    rc = AccessClassNew(cl, obj, (struct opSet *) msg);
  80.    break;
  81.  
  82.   case OM_DISPOSE:
  83.    rc = AccessClassDispose(cl, obj, msg);
  84.    break;
  85.  
  86.   /* TM methods */
  87.  
  88.   /* Unknown method -> delegate to SuperClass */
  89.   default:
  90.    rc = DoSuperMethodA(cl, obj, msg);
  91.    break;
  92.  }
  93.  
  94.  return(rc);
  95. }
  96.  
  97. /* Create Access class */
  98. #undef  DEBUGFUNCTION
  99. #define DEBUGFUNCTION CreateAccessClass
  100. struct MUI_CustomClass *CreateAccessClass(void)
  101. {
  102.  struct MUI_CustomClass *rc;
  103.  
  104.  /* Create class */
  105.  if (rc = MUI_CreateCustomClass(NULL, NULL, BaseClass,
  106.                                 sizeof(struct AccessClassData),
  107.                                 AccessClassDispatcher)) {
  108.  
  109.   /* Localize strings */
  110.   TextTitle = TranslateString(LOCALE_TEXT_ACCESS_TITLE_STR,
  111.                               LOCALE_TEXT_ACCESS_TITLE);
  112.  }
  113.  
  114.  ACCESS_LOG(LOG1(Result, "0x%08lx", rc))
  115.  
  116.  return(rc);
  117. }
  118.